REST API এর মাধ্যমে মডেল সার্ভ করা

Machine Learning - পাইব্রেইন (PyBrain) - Model Deployment এবং API Integration
184

REST API (Representational State Transfer Application Programming Interface) হল একটি জনপ্রিয় এবং সহজে ব্যবহৃত ওয়েব সেবা আর্কিটেকচার, যা HTTP প্রটোকল ব্যবহার করে ক্লায়েন্ট এবং সার্ভারের মধ্যে তথ্য আদান-প্রদান করে। মেশিন লার্নিং বা ডিপ লার্নিং মডেল সার্ভিং করার জন্য REST API ব্যবহার করা একটি সাধারণ এবং কার্যকরী পদ্ধতি। এটি আপনাকে আপনার মডেলকে ওয়েব সার্ভিস হিসেবে প্রদান করতে সহায়তা করে, যাতে অন্য অ্যাপ্লিকেশন বা ব্যবহারকারীরা HTTP অনুরোধের মাধ্যমে মডেলটির সঙ্গে যোগাযোগ করতে পারে।

নিচে Flask এবং FastAPI ব্যবহার করে মডেল সার্ভিং করার একটি সাধারণ গাইড দেওয়া হলো।


১. Flask দিয়ে মডেল সার্ভিং

Flask হল একটি পাইটন ওয়েব ফ্রেমওয়ার্ক, যা সাধারণ এবং হালকা ওয়েব অ্যাপ্লিকেশন তৈরি করার জন্য ব্যবহৃত হয়। Flask দিয়ে খুব সহজে একটি REST API তৈরি করা সম্ভব, যা আপনার মডেলকে সার্ভ করতে পারে।

ধাপ ১: মডেল তৈরি ও সংরক্ষণ

প্রথমে, আপনার মডেলকে প্রশিক্ষিত (trained) করে সংরক্ষণ করতে হবে। নিচে একটি সাধারণ উদাহরণ দেওয়া হলো যেখানে একটি scikit-learn মডেল তৈরি করা হয়েছে এবং তা Pickle দিয়ে সংরক্ষণ করা হয়েছে।

import pickle
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC

# Iris ডেটাসেট লোড করা
data = load_iris()
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2)

# মডেল তৈরি করা
model = SVC(kernel='linear')
model.fit(X_train, y_train)

# মডেল সংরক্ষণ
with open('svm_model.pkl', 'wb') as model_file:
    pickle.dump(model, model_file)

ধাপ ২: Flask API তৈরি করা

এখন, Flask দিয়ে একটি API তৈরি করা হবে যা প্রশিক্ষিত মডেলকে গ্রহণ করবে এবং ইউজারের ইনপুট অনুযায়ী পূর্বাভাস (prediction) প্রদান করবে।

from flask import Flask, request, jsonify
import pickle
import numpy as np

# Flask অ্যাপ তৈরি করা
app = Flask(__name__)

# মডেল লোড করা
with open('svm_model.pkl', 'rb') as model_file:
    model = pickle.load(model_file)

# API Endpoint: predict
@app.route('/predict', methods=['POST'])
def predict():
    try:
        # JSON ইনপুট গ্রহণ
        data = request.get_json()

        # ইনপুট ভ্যালু (features)
        features = np.array(data['features']).reshape(1, -1)

        # পূর্বাভাস করা
        prediction = model.predict(features)

        # ফলাফল রিটার্ন করা
        return jsonify({'prediction': int(prediction[0])})
    except Exception as e:
        return jsonify({'error': str(e)})

if __name__ == '__main__':
    app.run(debug=True)

ধাপ ৩: API চালু করা

এই কোডটি চালানোর জন্য, টার্মিনালে নিচের কমান্ডটি রান করুন:

python app.py

এটি একটি Flask API চালু করবে যা আপনার মডেল সার্ভ করবে। ডিফল্টভাবে এটি http://127.0.0.1:5000/ এ চলবে।

ধাপ ৪: API তে POST রিকোয়েস্ট পাঠানো

API কে কল করতে, আপনি POST রিকোয়েস্ট পাঠাতে পারবেন, যেখানে ইনপুট ডেটা JSON ফরম্যাটে পাঠানো হবে। আপনি Postman বা curl ব্যবহার করতে পারেন।

উদাহরণ হিসেবে, curl ব্যবহার করে API তে রিকোয়েস্ট পাঠানো:

curl -X POST -H "Content-Type: application/json" \
    -d '{"features": [5.1, 3.5, 1.4, 0.2]}' \
    http://127.0.0.1:5000/predict

এটি মডেল থেকে পূর্বাভাস পাবে, যেমন:

{
    "prediction": 0
}

২. FastAPI দিয়ে মডেল সার্ভিং

FastAPI হল আরও একটি জনপ্রিয় পাইটন ফ্রেমওয়ার্ক যা REST API তৈরি করার জন্য ব্যবহৃত হয় এবং এটি Flask এর তুলনায় দ্রুত এবং আধুনিক। এটি দ্রুত API তৈরির জন্য Pydantic এবং Starlette এর ওপর ভিত্তি করে তৈরি হয়েছে।

ধাপ ১: FastAPI ইনস্টলেশন

FastAPI ইনস্টল করতে টার্মিনালে নিচের কমান্ডটি রান করুন:

pip install fastapi[all]

ধাপ ২: FastAPI দিয়ে মডেল সার্ভিং

এখন, FastAPI দিয়ে মডেল সার্ভ করার উদাহরণ:

from fastapi import FastAPI
from pydantic import BaseModel
import pickle
import numpy as np

# FastAPI অ্যাপ তৈরি করা
app = FastAPI()

# মডেল লোড করা
with open('svm_model.pkl', 'rb') as model_file:
    model = pickle.load(model_file)

# ইনপুট ফিচার মডেল
class Features(BaseModel):
    features: list

# API Endpoint: predict
@app.post('/predict')
def predict(data: Features):
    try:
        # ইনপুট ভ্যালু (features)
        features = np.array(data.features).reshape(1, -1)

        # পূর্বাভাস করা
        prediction = model.predict(features)

        # ফলাফল রিটার্ন করা
        return {'prediction': int(prediction[0])}
    except Exception as e:
        return {'error': str(e)}

ধাপ ৩: FastAPI অ্যাপ চালানো

এই কোডটি চালানোর জন্য, টার্মিনালে নিচের কমান্ডটি রান করুন:

uvicorn app:app --reload

এটি FastAPI অ্যাপ্লিকেশন চালু করবে, এবং ডিফল্টভাবে এটি http://127.0.0.1:8000/ এ চলবে।

ধাপ ৪: API তে POST রিকোয়েস্ট পাঠানো

Postman বা curl ব্যবহার করে API তে POST রিকোয়েস্ট পাঠানো যাবে। উদাহরণস্বরূপ:

curl -X POST -H "Content-Type: application/json" \
    -d '{"features": [5.1, 3.5, 1.4, 0.2]}' \
    http://127.0.0.1:8000/predict

এটি একই ধরনের পূর্বাভাস প্রদান করবে:

{
    "prediction": 0
}

সারাংশ

Flask এবং FastAPI উভয়ই পাইটন ভিত্তিক ওয়েব ফ্রেমওয়ার্ক, যা মডেল সার্ভ করার জন্য REST API তৈরি করতে সহায়তা করে। Flask সহজ এবং প্রচলিত হলেও FastAPI আরও দ্রুত এবং আধুনিক ফিচার সমৃদ্ধ। এই API গুলি মডেল ট্রেনিং শেষে সার্ভারে মডেল ডিপ্লয় করতে এবং ক্লায়েন্ট থেকে ইনপুট নিয়ে তা প্রসেস করে ফলাফল রিটার্ন করতে ব্যবহৃত হয়।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...